home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / hack / 3_1 / sys / vms / makefile.utl < prev    next >
Encoding:
Makefile  |  1993-01-25  |  9.1 KB  |  287 lines

  1. #    NetHack Makefile (VMS) - for utility programs.
  2. #    SCCS Id: @(#)Makefile.utl    3.1    93/01/25
  3.  
  4. #  Copy this file to [.util]Makefile. and then edit it as needed.
  5. #  Settings for CC and CFLAGS ought to match the ones used in [.src]Makefile.
  6.  
  7. MAKE    = mms
  8. CD    = set default
  9. ECHO    = write sys$output
  10. MOVE    = rename/New        # within save device only
  11. MUNG    = search/Exact/Match=NOR    # to strip bogus #module directives
  12. RUN    = mcr            # simplest way to pass command line args
  13. TOUCH    = append/New _NLA0:    # only one file per $(TOUCH)
  14. # source tree, relative to 'src' and 'util'
  15. DAT = [-.dat]
  16. INC = [-.include]
  17. SHR = [-.sys.share]
  18. SRC = [-.src]
  19. UTL = [-.util]
  20. VMS = [-.sys.vms]
  21. # targets, with enough punctuation to keep MCR and DELETE happy
  22. MAKEDEFS= $(UTL)makedefs.exe;
  23. LEVCOMP = $(UTL)lev_comp.exe;
  24. DGNCOMP = $(UTL)dgn_comp.exe;
  25. RECOVER = $(UTL)recover.exe;
  26.  
  27. # if you are using gcc as your compiler,
  28. #    uncomment the CC definition below if it's not in your environment
  29. # CC = gcc
  30.  
  31. CFLAGS    = /Include=$(INC)/noList
  32. #CFLAGS = /Stand=VAXC/Incl=$(INC)/noList    # DECC in VAXC mode
  33. LFLAGS    = /noMap
  34. LIBS    = $(SRC)crtl/Options            # run-time library(s) needed
  35. LINK    = link
  36.  
  37. # If you don't have yacc, byacc, or bison or just don't want to run any of
  38. #    them, then make target "no_yacc" before trying to build lev_comp
  39. #    or dgn_comp.  You won't be able to modify *_comp.y though.
  40. # If you don't have lex or flex, then make target "no_lex" and leave
  41. #    *_comp.l alone.  $(VMS)lev_lex.h will be used to work-around some
  42. #    suspect code included in the distributed copies of *_lex.c.
  43. # If you do either of the above, the corresponding value of YACC and/or LEX
  44. #    below won't matter.
  45. #
  46. # Note:  VMS POSIX V1.1 lex and yacc generate code which contains an
  47. #    invalid #module directive; it order to prevent warnings for CC or
  48. #    choking by GCC, the SEARCH command is used in an attempt to strip
  49. #    then out.  Otherwise MMS would quit when making the affected targets.
  50. #    Each "munged" copy should be identical to its original if no #module
  51. #    directives are present.
  52. #
  53. # yacc/lex programs to use to generate *_comp.c, *_comp.h, and *_lex.c.
  54. # choose xxxOUT that matches xxx tool's output
  55. YACC    = bison /Define
  56. LEX    = flex
  57. #YACC    = yacc -d
  58. #LEX    = lex
  59. #YACC    = posix/Run posix$bin:yacc. "-d
  60. #LEX    = posix/Run posix$bin:lex. "
  61. # blank means foo.y -> foo_tab.c & foo_tab.h
  62. YACCOUT =        # bison
  63. #YACCOUT = ytab        # VMS POSIX
  64. #YACCOUT = y_tab    # DEC/Shell
  65. LEXOUT    = lexyy        # flex
  66. #LEXOUT  = lex_yy    # VMS POSIX
  67.  
  68. # Nothing below this line should have to be changed.
  69.  
  70. # linker options file
  71. LIBOPT    = $(SRC)crtl.opt;
  72.  
  73. # utility .c files
  74. MAKESRC    = makedefs.c
  75. SPLEVSRC   = lev_yacc.c lev_lex.c lev_main.c
  76. DGNCOMPSRC = dgn_yacc.c dgn_lex.c dgn_main.c
  77. UTILSRCS   = $(MAKESRC) $(SPLEVSRC) $(DGNCOMPSRC) panic.c recover.c
  78.  
  79. # object files for makedefs
  80. MAKEOBJS = makedefs.obj,$(SRC)monst.obj,$(SRC)objects.obj
  81. VMSMAKEOBJS = $(SRC)vmsmisc.obj
  82.  
  83. # object files for special levels compiler
  84. SPLEVOBJS = lev_main.obj,lev_yacc.obj,lev_lex.obj,panic.obj,\
  85.         $(SRC)alloc.obj,$(SRC)monst.obj,$(SRC)objects.obj,\
  86.         $(SRC)decl.obj,$(SRC)drawing.obj
  87. VMSSPLEVOBJS = $(SRC)vmsmisc.obj,$(SRC)vmsfiles.obj
  88.  
  89. # object files for dungeon compiler
  90. DGNCOMPOBJS = dgn_main.obj,dgn_yacc.obj,dgn_lex.obj,panic.obj,$(SRC)alloc.obj
  91. VMSDGNCOBJS = $(SRC)vmsmisc.obj
  92.  
  93. # object files for recovery utility
  94. RECOVOBJS = recover.obj
  95. VMSRECOBJS = $(SRC)vmsmisc.obj,$(SRC)vmsfiles.obj
  96.  
  97.  
  98. #    fake target
  99. default :
  100.       @ $(ECHO) "Oops!  No target(s) specified...."
  101.  
  102. all    : $(MAKEDEFS) $(LEVCOMP) $(DGNCOMP) $(RECOVER)
  103.       @ $(ECHO) "util is up to date."
  104.  
  105. #    special targets for folks without yacc/bison and or lex/flex
  106. no_yacc :
  107.     copy $(SHR)%%%_yacc.c $(UTL)
  108.     copy $(SHR)%%%_comp.h $(INC)
  109.       @ $(ECHO) "distributed yacc output (*_yacc.c) copied into place"
  110. no_lex :
  111.     copy $(SHR)%%%_lex.c $(UTL)
  112.     copy $(VMS)lev_lex.h $(UTL)
  113.       @ $(ECHO) "distributed lex output (*_lex.c) copied into place"
  114.  
  115. #    alternate target names for possible interactive use
  116. makedefs : $(MAKEDEFS)
  117.       @ $(ECHO) "makedefs is up to date."
  118. lev_comp : $(LEVCOMP)
  119.       @ $(ECHO) "lev_comp is up to date."
  120. dgn_comp : $(DGNCOMP)
  121.       @ $(ECHO) "dgn_comp is up to date."
  122. recover  : $(RECOVER)
  123.       @ $(ECHO) "recover is up to date."
  124.  
  125. $(LIBOPT) : $(SRC)Makefile.;        # linker options file
  126.     $(CD) $(SRC)
  127.     $(MAKE)$(MAKEFLAGS) $(LIBOPT)
  128.       @ $(CD) $(UTL)
  129.  
  130. #    dependencies for makedefs
  131. #
  132. $(MAKEDEFS) :    $(MAKEOBJS) $(VMSMAKEOBJS) $(LIBOPT)
  133.     $(LINK) $(LFLAGS) $(MAKEOBJS),$(VMSMAKEOBJS),$(LIBS)
  134.  
  135. makedefs.obj :    $(INC)config.h $(INC)permonst.h $(INC)objclass.h \
  136.         $(INC)monsym.h $(INC)artilist.h $(INC)qtext.h \
  137.         $(INC)patchlevel.h
  138.     $(CC) $(CFLAGS) makedefs.c
  139.  
  140. $(INC)onames.h    : $(MAKEDEFS)
  141.     $(RUN) $(MAKEDEFS) -o
  142. $(INC)pm.h    : $(MAKEDEFS)
  143.     $(RUN) $(MAKEDEFS) -p
  144. $(SRC)monstr.c    : $(MAKEDEFS)
  145.     $(RUN) $(MAKEDEFS) -m
  146. # both vis_tab.h and vis_tab.c are made at the same time by makedefs -z
  147. $(INC)vis_tab.h : $(SRC)vis_tab.c
  148.     $(TOUCH) $(INC)vis_tab.h
  149. $(SRC)vis_tab.c : $(MAKEDEFS)
  150.     $(RUN) $(MAKEDEFS) -z
  151.  
  152. # the src Makefile is responsible for knowing when to call this, since
  153. # it knows all about the main src and include files
  154. $(INC)date.h :    $(MAKEDEFS)
  155.     $(RUN) $(MAKEDEFS) -v
  156.  
  157.  
  158. #    dependencies for lev_comp
  159. #
  160. $(LEVCOMP) : $(SPLEVOBJS) $(VMSSPLEVOBJS)    # $(LIBOPT)
  161.     $(LINK)/Exe=$(LEVCOMP) $(LFLAGS) $(SPLEVOBJS),$(VMSSPLEVOBJS),$(LIBS)
  162.  
  163. lev_yacc.obj : $(INC)hack.h $(INC)sp_lev.h lev_yacc.c
  164.     $(CC) $(CFLAGS) lev_yacc.c
  165. lev_lex.obj  : $(INC)hack.h $(INC)lev_comp.h $(INC)sp_lev.h lev_lex.c
  166.     @ if f$search("lev_lex.h").nes."" then    $(MOVE) lev_lex.h stdio.h
  167.     $(CC) $(CFLAGS) lev_lex.c
  168.     @ if f$search("stdio.h").nes."" then  $(MOVE) stdio.h lev_lex.h
  169. lev_main.obj : $(INC)hack.h $(INC)sp_lev.h $(INC)termcap.h lev_main.c
  170.     $(CC) $(CFLAGS) lev_main.c
  171. panic.obj    : $(INC)config.h
  172.     $(CC) $(CFLAGS) panic.c
  173.  
  174. $(INC)lev_comp.h : lev_yacc.c
  175.     $(TOUCH) $(INC)lev_comp.h
  176.  
  177. lev_yacc.c : lev_comp.y
  178.     $(YACC) lev_comp.y
  179.     $(MUNG) 'f$parse("$(YACCOUT)","lev_comp_tab.c")' "#module" /Outp=lev_yacc.c
  180.     @ if f$search("''f$parse("$(YACCOUT)","lev_comp_tab.c")'").nes."" then \
  181.         delete 'f$parse("$(YACCOUT)","lev_comp_tab.c")'
  182.     $(MOVE) 'f$parse("$(YACCOUT)","lev_comp_tab.h")' $(INC)lev_comp.h
  183.  
  184. lev_lex.c : lev_comp.l
  185.     $(LEX) lev_comp.l
  186.     $(MUNG) 'f$parse("$(LEXOUT)","lev_comp_lex.c")' "#module" /Outp=lev_lex.c
  187.     @ if f$search("''f$parse("$(LEXOUT)","lev_comp_lex.c")'").nes."" then \
  188.         delete 'f$parse("$(LEXOUT)","lev_comp_lex.c")'
  189.  
  190.  
  191. #    dependencies for dgn_comp
  192. #
  193. $(DGNCOMP) : $(DGNCOMPOBJS) $(VMSDGNCOBJS)    # $(LIBOPT)
  194.     $(LINK)/Exe=$(DGNCOMP) $(LFLAGS) $(DGNCOMPOBJS),$(VMSDGNCOBJS),$(LIBS)
  195.  
  196. dgn_yacc.obj : $(INC)config.h $(INC)dgn_file.h dgn_yacc.c
  197.     $(CC) $(CFLAGS) dgn_yacc.c
  198. dgn_lex.obj  : $(INC)config.h $(INC)dgn_comp.h $(INC)dgn_file.h dgn_lex.c
  199.     @ if f$search("lev_lex.h").nes."" then    $(MOVE) lev_lex.h stdio.h
  200.     $(CC) $(CFLAGS) dgn_lex.c
  201.     @ if f$search("stdio.h").nes."" then  $(MOVE) stdio.h lev_lex.h
  202. dgn_main.obj : $(INC)config.h dgn_main.c
  203.     $(CC) $(CFLAGS) dgn_main.c
  204.  
  205. $(INC)dgn_comp.h : dgn_yacc.c
  206.     $(TOUCH) $(INC)dgn_comp.h
  207.  
  208. dgn_yacc.c : dgn_comp.y
  209.     $(YACC) dgn_comp.y
  210.     $(MUNG) 'f$parse("$(YACCOUT)","dgn_comp_tab.c")' "#module" /Outp=dgn_yacc.c
  211.     @ if f$search("''f$parse("$(YACCOUT)","dgn_comp_tab.c")'").nes."" then \
  212.         delete 'f$parse("$(YACCOUT)","dgn_comp_tab.c")'
  213.     $(MOVE) 'f$parse("$(YACCOUT)","dgn_comp_tab.h")' $(INC)dgn_comp.h
  214.  
  215. dgn_lex.c : dgn_comp.l
  216.     $(LEX) dgn_comp.l
  217.     $(MUNG) 'f$parse("$(LEXOUT)","dgn_comp_lex.c")' "#module" /Outp=dgn_lex.c
  218.     @ if f$search("''f$parse("$(LEXOUT)","dgn_comp_lex.c")'").nes."" then \
  219.         delete 'f$parse("$(LEXOUT)","dgn_comp_lex.c")'
  220.  
  221.  
  222. #    dependencies for recover
  223. #
  224. $(RECOVER) : $(RECOVOBJS) $(VMSRECOBJS)        # $(LIBOPT)
  225.     $(LINK) $(LFLAGS) $(RECOVOBJS),$(VMSRECOBJS),$(LIBS)
  226.  
  227. recover.obj : $(INC)config.h
  228.  
  229.  
  230. # make sure object files from src are available when needed
  231. #
  232. $(SRC)alloc.obj : $(SRC)alloc.c $(INC)config.h
  233.     $(CD) $(SRC)
  234.     $(MAKE)$(MAKEFLAGS) alloc.obj
  235.       @ $(CD) $(UTL)
  236.  
  237. $(SRC)monst.obj : $(SRC)monst.c $(INC)config.h
  238.     $(CD) $(SRC)
  239.     $(MAKE)$(MAKEFLAGS) monst.obj
  240.       @ $(CD) $(UTL)
  241.  
  242. $(SRC)objects.obj : $(SRC)objects.c $(INC)config.h
  243.     $(CD) $(SRC)
  244.     $(MAKE)$(MAKEFLAGS) objects.obj
  245.       @ $(CD) $(UTL)
  246.  
  247. $(SRC)decl.obj : $(SRC)decl.c $(INC)hack.h
  248.     $(CD) $(SRC)
  249.     $(MAKE)$(MAKEFLAGS) decl.obj
  250.       @ $(CD) $(UTL)
  251.  
  252. $(SRC)drawing.obj : $(SRC)drawing.c $(INC)hack.h
  253.     $(CD) $(SRC)
  254.     $(MAKE)$(MAKEFLAGS) drawing.obj
  255.       @ $(CD) $(UTL)
  256.  
  257. # make sure hack.h dependencies get transitive information
  258. $(INC)hack.h : $(INC)config.h
  259.     $(CD) $(SRC)
  260.     $(MAKE)$(MAKEFLAGS) $(INC)hack.h
  261.       @ $(CD) $(UTL)
  262.  
  263. # VMS specific dependencies
  264. $(SRC)vmsmisc.obj :    $(VMS)vmsmisc.c
  265.     $(CD) $(SRC)
  266.     $(MAKE)$(MAKEFLAGS) vmsmisc.obj
  267.       @ $(CD) $(UTL)
  268.  
  269. $(SRC)vmsfiles.obj :    $(VMS)vmsfiles.c $(INC)config.h
  270.     $(CD) $(SRC)
  271.     $(MAKE)$(MAKEFLAGS) vmsfiles.obj
  272.       @ $(CD) $(UTL)
  273.  
  274.  
  275. clean :
  276.       - if f$search("*.*;-1").nes."" then  purge
  277.       - if f$search("*.obj") .nes."" then  delete *.obj;
  278.  
  279. spotless :    clean
  280.       - if f$search("%%%_lex.c") .nes."" then  delete %%%_lex.c;
  281.       - if f$search("%%%_yacc.c").nes."" then  delete %%%_yacc.c;
  282.       - if f$search("$(INC)%%%_comp.h").nes."" then  delete $(INC)%%%_comp.h;
  283.       - if f$search("lev_lex.h") .nes."" then  delete lev_lex.h;
  284.       - if f$search("*tab.c")     .nes."" then  delete *tab.c;
  285.       - if f$search("*.exe").nes."" then \
  286.  delete $(MAKEDEFS),$(LEVCOMP),$(DGNCOMP),$(RECOVER)
  287.